import { HTMLAttributes } from 'react';

export interface ICopyableProps {
  /** 拷贝到剪切板里的文本 */ text: string | (() => string | Promise<string>);
  /** 拷贝成功的回调函数 */ onCopy: (event: MouseEvent) => void;
  /** 自定义拷贝图标：[默认图标, 拷贝后的图标] */ icon: [
    React.ReactNode,
    React.ReactNode,
  ];
  /** 自定义提示文案，为 false 时隐藏文案，默认：[复制, 复制成功] */ tooltips:
    | false
    | [React.ReactNode, React.ReactNode];
  /** 剪切板数据的 Mime Type */ format: 'text/plain' | 'text/html';

  tooltip: boolean | React.ReactNode;
}

export interface ITextBasicProps<T = any> extends HTMLAttributes<T> {
  /** 文本类型 */ type?: 'secondary' | 'success' | 'warning' | 'danger';
  /** 是否加粗 */ strong?: boolean;
  /** 是否斜体 */ italic?: boolean;
  /** 添加下划线样式 */ underline?: boolean;
  /** 添加删除线样式 */ delete?: boolean;
  /** 添加代码样式 */ code?: boolean;
  /** 添加标记样式 */ mark?: boolean;
  /** 禁用文本 */ disabled?: boolean;
  /** 是否可拷贝 */ copyable?: boolean | ICopyableProps;
  /** 自动溢出省略，为对象时不能设置省略行数、是否可展开、onExpand 展开事件 */ ellipsis?: boolean;
  /** 点击 Text 时的回调 */ onClick?: (event: any) => void;
}

export interface ITextProps extends ITextBasicProps {
  /** 添加键盘样式 */ keyboard?: boolean;
}
export interface ITextTitleProps extends ITextBasicProps {
  /** 重要程度，相当于 h1、h2、h3、h4、h5 */ level?: 1 | 2 | 3 | 4 | 5 | 6;
}

export { default as Paragraph } from './Paragraph';
export { default as Text } from './Text';
export { default as Title } from './Title';
